﻿// GCD and LCM Aizu - 0005.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>

using namespace std;

//https://vjudge.csgrandeur.cn/problem/Aizu-0005


/*
编写一个程序，计算给定的a和b的最大公约数（GCD）和最小公倍数（LCM）。

输入
输入由多个数据集组成。每个数据集在一行中由a和b用一个空格分隔。输入以EOF结束。

约束
0 < a, b ≤ 2,000,000,000
LCM(a, b) ≤ 2,000,000,000
数据集的数量 ≤ 50

输出
对于每个数据集，以一行中用一个空格分隔的形式输出GCD和LCM。

示例输入
8 6
50000000 30000000
示例输入对应的输出
2 24
10000000 150000000
*/



int a, b;

int gcd(int a, int b) {
	if (b == 0) return a;
	return gcd(b, a % b);
}


void solve() {
	int g = gcd(a, b);
	int lc = 1ll * a * b / g;
	cout << g << " " << lc << endl;
}


int main()
{
	while (cin >> a >> b) {
		solve();
	}


	return 0;
}
 